iT邦幫忙

2021 iThome 鐵人賽

DAY 1
1
自我挑戰組

Be friend with JavaScript系列 第 1

Day 1 - JavaScript 的變數與基本資料型態

  • 分享至 

  • xImage
  •  

廢話不多說~直接進入正題/images/emoticon/emoticon12.gif
變數(Variable)

變數就像一個箱子,拿來裝資料,且所有變數都只能出現一次,不可取一樣名字,也不可重複宣告。
在程式語言中的 = ,是賦予值的意思,將等號右邊的值放入左邊,例如:

let num = 2;
console.log(num); // 2

表示將 2 賦予給 num 這個變數,則 num = 2。

基本資料型態(Primitive Data Types)

在 JavaScript 中最基本的資料儲存方式有 7 種,包括 Number、BigInt、String、Boolean、Undefined、Null、Symbol,其他的資料型態都是由這幾種組合而成,只要是這幾個以外的資料型態,都不是 JavaScript 原始的,例如:Array、Object...等,而 Array、Function 又屬於 Object(這邊先不多說,之後的文章會來深入探討 Object)。

  1. Number

數字,且介於 -(2**53 -1) ~ 2**53 -1 之間,用來建立物件的數值,也可以用來轉換型別,並且包含許多方法,例如:toFixed()toString() 等。
Number 除了能代表浮點數以外,還有三個 symbolic value:+Infinity(正無限大)、-Infinity(負無限大)、NaN(Not A Number)。

  • toString() 為數字轉字串的方法,這個方法只能在 Number 用。
let age = 25;
console.log(age+10); // 35
console.log(age.toString()+10); // 2510
  • toFixed() 為設定小數點要幾位數。
let pi = 3.141592;
console.log(pi.toFixed(5)) // 3.14159
console.log(pi.toFixed(2)) // 3.14
  • Number.isNaN() 可以用來判斷傳入的值是否為 NaN,如果參數沒辦法被轉換成數字,會回傳 NaN,例如:輸入的內容是 String 時就無法轉換為 Number,結果會顯示 NaN。
let example = "a" + 3;
console.log(typeof example); // string
isNaN(example); // true

補充:
NaN 的資料型別是 Number
Infinity 的資料型別也是 Number

console.log(Infinity/Infinity); // NaN
console.log(Infinity/0); // Infinity
console.log(0/0); // NaN

在微積分裡不定形有 6 種,如果在 JavaScript 裡就會得到 NaN
就是因為 NaN 包含太多種不定形的可能性,用 NaN 去確認他們的值的話永遠不會相等,所以不能用數值去和 NaN 比較,且 NaN 永遠都不會等於 NaN,因此我們想確認一個值是不是 NaN 時只能用 isNaN() 這個方法

let result = 0/0;
console.log(result); // NaN
console.log(result == NaN); // false
console.log(result === NaN); // false

不管用什麼來跟 isNaN() 比較,都會 return false

let result = 0/0;
console.log(isNaN(result)); // true

所以只能在 isNaN() 裡面放入要比較的東西

  1. BigInt

大於 2**53 -1整數,使用方式為在後面加一個 n,或是利用 BigInt() 將 Number 轉為 BigInt。

console.log(BigInt(123) === 123n); // true
console.log(typeof 123); // number
console.log(typeof 123n); // bigint
  1. String

字串,放在雙引號 "" 或單引號 ' ' 裡面,String 有許多方法及屬性。

  • toLowerCase() :把字串全部換成小寫;toUpperCase():把字串全部換成大寫。
let name = "Mary";
console.log(name.toLowerCase()); // mary
let name = "john";
console.log(name.toUpperCase()); // JOHN
  • split():分割
    切割空白
let sentence = "I am rich";
console.log(sentence.split(" "));
//["I","am","rich"]

無切割空白

let sentence = "I am rich";
console.log(sentence.split(""));
// ["I","a","m","r","i","c","h"]
  • indexOf() 找某個元素的索引值
let name = "MongoDB";
console.log(name.indexOf('D')) // 5

也可以找某個元素的片段的索引值,結果會顯示那個片段開始的索引位置

let name = "MangoDataBase";
console.log(name.indexOf('Data')) // 5
// 意思為 Data 這個片段從索引位置 5 的地方開始

如果尋找的東西字串裡根本沒有,則會出現索引位置為 -1。

let name = "Mary";
console.log(name.indexOf("m")); // -1
// 因為 name 裡根本沒有小寫的 m
  1. Boolean

布林值,用來判斷 true(真)或 false(偽)。

console.log(10 > 9); // true
console.log(3 < 1); // false

補充:
除了下列幾種是 Falsy Values,其他都是 Truthy Values,負數也是 Truthy Value!

  • false
  • 0
  • -0
  • “ ”
  • null
  • undefined
  • NaN
  • 0n
  1. Undefined

表示未被定義,例如一個變數宣告了卻沒有賦予值給它,則會出現 undefined。

let x;
console.log(x); // undefined
  1. Null

被定義沒有任何東西(空值),要特別注意的是 null 的 type 是 object。

let x = null;
console.log(x); // null
console.log(typeof x); // object
  1. Symbol

Symbol 為一個 function,可以用來創建獨一無二的值。

let x = Symbol();
console.log(typeof x); // symbol

參考資料:
MDN - JavaScript data types and data structures


下一篇
Day 2 - Operators
系列文
Be friend with JavaScript39
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言